home *** CD-ROM | disk | FTP | other *** search
- Introduction
- This document explains how to use FCL and build a control
- simulation under GAF. Following topics are covered in this
- document:
- - brief description of basic concept
- - simple steps to build a simulation
- - FCL reference manual
-
- A segment, the basic module in GAF, is a text file contains
- these information for (or related to) a segment.
- - configuration information
- - variable declarations (IN, OUT, INOUT, and LOCAL)
- - symbol (fuzzy membership set) declarations
- - enable condition and cycle time of the segment
- - initialization
- - reset
- - pre-processing
- - post-processing
- - fuzzy rules
- - data table(s)
-
- A typical FCL segment layout will look like this.
-
- FCL construct Refer to Section
- ------------------------------- ------------------
- configuration_declaration Configuration
-
- segment_declaration Declare segment
-
- cycle_declaration Cycle Time
-
- variable_declaration(s) Declare variable
-
- enable_declaration Enable condition
-
- symbol_declaration(s) Declare fuzzy symbol
-
- preset_declaration(s) Preset
-
- init_declaration Initialization
-
- reset_declaration Reset
-
- pre_processing Pre-processing
-
- post_processing Post-processing
-
- rule_declaration(s) Define rule
-
- data_declaration(s) Data Table
-
- end_declaration Declare segment
-
- Just like dividing a control system into several manageable
- portions, GAF allows a control system to be divided into
- segments. For example, a simulated control environment under
- GAF may have these different segments:
- - control segment(s)
- - reference calculation and supporting segment(s)
- - simulation (or feedback) segment(s)
- - evaluation segment
- The feedback and evaluation segments are used for simulation and
- adaptation.
-
- Segment Construction
- To construct a segment is quite similar to construct a simple
- program. The followings are simple steps to construct a GAF
- segment.
-
- 1. Define all variables for this segment:
- All variables must be declared before they can be used either
- by fuzzy rules or any statements in this segment. There are
- four types of variables: IN, OUT, INOUT, and LOCAL.
-
- IN variables
- IN variables are used as "references" in this segment. IN
- variables must be in one of the categories:
- - calculated by other segment (as OUT)
- - an input from real world, i.e. a sensor, this input may
- be an OUT from a feedback segment in a simulation.
- - application constants, can be modified through
- interactive interface during simulation
-
- OUT variables
- OUT variables are calculated outputs by this segment. OUT
- variables are either:
- - an output signal to a real world device
- - be used by other segment as IN variables
- - for diagnostic purpose
- - evaluation result
-
- INOUT variables
- INOUT variables are both referenced and modified by this
- segment, i.e., it is the combination of both IN and OUT
- variables. Normally INOUT variables are referenced by
- this segment and other segments.
-
- All of the IN, OUT, and INOUT variables are visible to other
- segments, i.e. other segments can use this segment's OUT as
- its IN.
-
- LOCAL variables
- LOCAL variables are local to this segment. Normally,
- local variables are used to store temporary values so it
- can be used by fuzzy rules or other statements within the
- segment.
-
- 2. Fuzzy membership set declaration.
- The second step would be define the fuzzy membership set.
- GAF uses four points for each set. In general, fuzzy sets
- should be defined for each variable that is used in the
- fuzzy rules. For example, as described in the following
- figure. A simple way to define membership sets for a
- variable is to equaly divide the range of the variable into
- six to obtain five sets - very low (VL), low (LO), medium
- (M), high (HI), and very high (VH).
-
- ----- - - - -----
- \ / \ / \ / \ /
- \ / \ / \ / \ /
- X X X X
- / \ / \ / \ / \
- / \ / \ / \ / \
- +-----+-----+-----+-----+-----+-----+
- -1 -0.67 -0.33 0 0.33 0.67 1
- | very low | medium | very high |
- | low | high |
-
- As the above diagram shows these five membership sets are
- symmatrically divided. After determine each membership set,
- then, use these declarations for the starting point.
- SYMBOL very_low (-1.00, -1.00, -0.67, -0.33, 1.0)
- SYMBOL low (-0.67, -0.33, -0.33 0, 1.0)
- SYMBOL medium (-0.33, 0, 0, 0.33, 1.0)
- SYMBOL high ( 0, 0.33, 0.33, 0.67, 1.0)
- SYMBOL very_high ( 0.33, 0.67, 1, 1, 1.0)
-
- 3. Define fuzzy rules.
- Defining fuzzy rules is straight forward. For example, based
- on common sense to control a water heater, a simple rule may
- be like:
- "if water usage is heavy and water is cold, then
- the gas fuel valve to heat the tank must be full open"
- This idea can turn into a rule like:
- IF water_usage IS heavy AND water IS cold
- THEN fuel_valve IS full_open
- Where water_usage and water are IN variables, fuel_valve is
- an OUT variable; heavy, cold, and full_open are membership
- sets defined for corresponding variables.
- Note that all variables that are part of "THEN" statement
- must be declared as OUT or INOUT.
- Instead of defining fuzzy rule, data set can be used to
- replace fuzzy rules. Please refer to step 8 for more
- details.
-
- 4. Initializes the segment.
- The initialization of a segment is to initialize all outputs
- (OUT and INOUT variables) and its local variables. The
- initialization will be executed when the system "comes up"
- (i.e., the first time it runs the segment) or by the request
- from interactive interface. All initialization formulas must
- be stated like this:
- what's in the text remarks
- ------------------- -----------------------------
- INITIALIZATION must have this key word
- ... ; statements for initialization
- each statement must end with ';'
- RESET optional key word for
- ... ; reset processing statements
- PRE_PROCESSING optional key word for
- ... ; pre-processing statements
- POST_PROCESSING optional key word for
- ... ; post-processing statements
- END; must end this key word (with ';')
-
- For example, for the above water heat control, the segment
- should initialize the fuel_valve to close.
- INITIALIZATION
- fuel_valve = 0;
- PRE_PROCESSING
- ...
- END;
-
- 5. Reset processing
- Similar to initialization, the reset processing is to reset
- the segment when the segment is disabled. The reset
- processing is only necessary when it is different from the
- initialization.
-
- 6. Pre-processing and post-processing
- The pre-processing is a set of statements to be calculated
- before the fuzzy rules are inferenced. The post-processing
- is a set of statements to be calculated after the fuzzy rules
- are inferenced. The formulas can be used for calculating
- references or other simple mathematical models.
- Pre-processing is calculated before any fuzzy rule been
- evaluated, so the results of these formulas may be used by
- fuzyy rules to inference the result. Post-processing is
- calculated after the inference of fuzzy rules.
-
- 7. Segment enable condition and its cycle time
- The enable condition determines whether the segment shoud run
- or not. If enable condition is not specified GAF treats the
- segment as enabled all the time. The cycle time determines
- how frequently the segment will run, cycle time can be
- adjusted during simulation.
-
- 8. Build data table
- An alternative of defining fuzzy rules is to use data set.
- Whether it is measured data from the field or data generated
- from a modeling program, the data set can be plugged into
- GAF. Data set must be arranged into spread sheet like table,
- and using the key DATA_TABLE to indicate the contents and the
- order of data in the table. Note that the data set must be
- a complete data set, i.e., it must cover the entire range of
- each variable.
-
-
- Format Covention
- Conventions used for describing FCL syntax (format):
- - all key words are in upper case
- - key words are not case sensitive, but must be the same
- - options are enclosed within breckets []
- - < | | > indicates selection of one out of two or more items
-
- Comment
- A comment can be anywhere in the segment, it starts with '!' and
- lasts to the end of the line.
-
- Declare Segment: segment_declaration, end_declaration
- There are three types of segments: normal control segment,
- feedback segment, and evaluation segment.
- Format for segment_declaration:
- FORMAT < SEGMENT
- | FEEDBACK
- | EMUL_SEGMENT
- | EVAL_SEGMENT > seg_name
- . . . seg_contents . . .
- END seg_name ;
- Where
- seg_name : the name of the segment
- seg_contents are statements for this segment
- Example
- SEGMENT main_control
- CYCLE_TIME 0.1
- . . .
- END main_control;
-
- As shown in the FCL construct, a segment is enclosed within two
- keys. The first key can be one of the followings, followed by
- the name of the segment.
- SEGMENT for normal (control) segment
- EMUL_SEGMENT & FEEDBACK
- for emulation/feedback segment
- EVAL_SEGMENT for adaptive evaluation segment
- A segment must always end with the END keyword followed by the
- name of the segment.
-
- Note that in simulation and adapt modes the feedback segment's
- output value will be feed back to the control segment(s) based
- on variable name(s).
-
- Cycle Time: cycle_declaration
- FORMAT CYCLE_TIME value
- Where
- value : the cycle time in seconds
- Example
- SEGMENT main_control
- CYCLE_TIME 0.1
- . . .
- END main_control;
-
- Cycle_time defines how frequently the segment runs. For example
- a value of 0.1 defines the segment runs every 100 milliseconds.
- Note that actual delay time between two consecutive runs may be
- longer than 100 milliseconds if GAF is heavily loaded with
- segments.
-
-
- Declare Variable: variable_declaration
- There are four different kinds of variables: IN, OUT, INOUT, and
- LOCAL. The segment will only read (reference) from those IN
- variables, and write (generate new value) to the OUT variables.
- The segment can read and write to both INOUT and LOCAL
- variables, however, local variables are not visible from outside
- the segment.
- FORMAT var_type var_name (min_value, max_value)
- Where
- var_type : one of the 4 types IN, OUT, INOUT, LOCAL
- var_name : the variable name
- min_value : the minimum value of the variable
- max_value : the maximum value of the variable
- Example
- SEGMENT main_control
- CYCLE_TIME 0.1
-
- IN Reference (0, 100)
- OUT Result (0, 10)
- LOCAL Temp (-1, 1)
- . . .
- END main_control;
- Variable name must be unique in the same segment. A variable
- should not be declared as an output variable (OUT or INOUT) in
- more than one segments.
-
- GAF Global Variable
-
- DELTA_TIME:
- The delta_time variable is the time gap between the
- current segment run time and the last time the segment
- ran. Delta time is in seconds (floating point), it can be
- used only in math processing.
- Example:
- Speed = ( Position - Last_position ) / Delta_time ;
-
- Declare Fuzzy Symbol: symbol_declaration
- The basic fuzzy membership set definition is a trapezoid with 4
- points below, low, high, above, and a max_truth value.
-
- _____ <----- max_truth: maximum truth value
- / \
- / \
- / \
- -------+--+-----+--+------- <----- 0: minimum truth value
- | | | |
- | | | above: false above
- | | high: high truth
- | low: low truth
- below: false below
-
- As depicted in the diagram above, the truth for different values
- are:
- if value <= below truth = 0
- if value >= above truth = 0
- if low <= value <= high truth = max_truth
- for other values use interpolation to derive truth
- The range of truth value is 0.0 to 1.0.
-
- FORMAT SYMBOL sym_name [OF var_name] fuzzy_membership_set
- Format for fuzzy_membership_set
- ( below, low, high, above [, truth [, center ] ] )
- Where
- sym_name : the name of the symbol
- var_name : the name of the variable for this symbol
- fuzzy_membership_set
- : defines the four points of a membership set and
- truth : the max truth value
- center : the center value
- Example
- SEGMENT main_control
- CYCLE_TIME 0.1
-
- IN Reference (0, 100)
- OUT Result (0, 10)
- LOCAL Temp (-1, 1)
-
- SYMBOL small OF Reference (0, 0, 10, 20, 1.0)
- SYMBOL strong (8, 9, 10, 10, 1, 10)
- . . .
- END main_control;
- The fuzzy symbol declaration is used to declare a named fuzzy
- membership set. This named symbol can then be used in the fuzzy
- rules. The symbol defines the shape of a trapezoid fuzzy
- membership set, as described above, and the optional truth value
- and the center value. If the center value is specified, GAF
- uses this value, otherwise GAF calculates the center of gravity
- as the center value. A symbol can be defined for all variables
- or defined for a specific variable with "OF var_name" option.
- If a symbol is defined for a specific variable, it can only be
- used for that variable. Symbol names are not required to be
- unique in a segment. For example, two symbols "VERY_SMALL" can
- be defined for two different variables "SPEED" and "POPULATION"
- with two different shapes as in the following example.
- IN Speed (-100, 100)
- IN Population (0, 1000)
- SYMBOL VerySmall OF Speed (-5, 0, 0, 5)
- SYMBOL VerySmall OF Population (0, 50, 50, 100)
-
- Math Processing Statement
- Besides fuzzy rule, GAF supports non-fuzzy math calculation: the
- math statements. The math statements are very similar to high
- level languages such as C++ and Ada. Math statements can be
- further divided into two categories: condition statement and
- assignment statement.
-
- Assignment statement is used to assign a variable with a value
- or the result of a math formula. The format for an assignment
- statement is:
- FORMAT
- var_name = [ unary_op ] math_val [ binary_op math_val ] ;
- Where var_name: the name of the target variable
- math_val: a constant or name of a variable
- unary_op: unary operator: -
- binary_op: binary operator: + - * /
-
- The condition statement is used to direct GAF to execute
- different assignments based on non-fuzzy boolean logic. The
- format for a condition statement is:
- FORMAT
- IF logic_expression THEN
- true_statements
- [ ELSE
- false_statements ]
- ENDIF;
- Where - logic expression is a math formula, if the result is
- TRUE then the true assignment statements will be
- executed. If the result is FALSE, then the false
- assignment statements will be executed. Available
- logical operators are:
- > greater than
- < less than
- >= greater or equal
- <= less or equal
- == equal
- <> not equal
- && and operator
- AND and operator
- || or operator
- OR or operator
- - true_statement and false_statement are assignment
- statements as described.
- Note that math statements are non-fuzzy statements (for current
- version). Since bivalent logic is simply an extreme of a fuzzy
- set, GAF does not support "boolean" variable. However, boolean
- logic can be emulated by fuzzy variable as in this example.
- LOCAL tmp_bool (0, 1)
- LOCAL tmp_val (0, 10)
-
- IF tmp_bool THEN ! use tmp_bool as a boolean
- tmp_val = 3;
- ENDIF;
- IF ( tmp_bool == 1 ) THEN ! compare tmp_bool with 1
- tmp_val = 5;
- END_IF;
- IF ( tmp_val > 9 ) THEN
- tmp_val = 9;
- ENDIF;
-
- Initialization: init_declaration
- Reset: reset_declaration
- Pre-Processing: pre_processing
- Post-Processing: post_processing
- The initialization declaration defines how the segment will be
- initialized. The reset declaration defines how to reset a
- segment when the segment is disabled. Pre/Post processing
- declarations define the statements to be executed before/after
- fuzzy inference.
-
- FORMAT [ [ INITIALIZATION
- init_statement(s) ]
- [ RESET
- reset_statement(s) ]
- [ < PRE_PROCESSING | BEGIN >
- pre_statement(s) ]
- [ POST_PROCESSING
- post_statement(s) ]
- END; ]
- Where - init_statements are math statements for
- initializing the segment.
- - reset_statements are math statements to reset the
- segment.
- - pre_statements are math statements to be executed
- before the fuzzy rule inference for the segment.
- - post_statements are math statements to be executed
- after the fuzzy rule inference for the segment.
- Example
- INITIALIZATION
- speed = 0;
- PRE_PROCESSING
- IF position > 50 THEN
- speed = 3.5;
- ELSE
- speed = speed + 2;
- END IF;
- END;
-
- Preset: preset_declaration
- Just like the initialization and reset declarations, a preset
- declaration is a sequence of assignments to setup the segment to
- a known state. Normally this is done by assigning values
- (constants) to local and output variables. There is no limit of
- the number of presets in a segment. Presets are used for
- genetic adapt for testing new rules' result. They also can be
- requested by user during simulation and check modes.
- FORMAT: PRESET
- preset_statement(s)
- END;
- Example
- PRESET
- Reference = 100;
- Position = 0;
- END ;
-
- Define Rule: rule_declaration
- FCL uses IF THEN construct to define a fuzzy rule. The IF
- statement contains multiple fuzzy evaluations bound with AND or
- OR. The format of fuzzy evaluation is defined as:
- variable IS symbol
- which describes "What is the truth value of the current value of
- 'variable' in the fuzzy membership set 'symbol'?". The result of
- the evaluation will be the truth value between 0 and 1 as
- described in the symbol_declaration. The overall result of the
- IF statement will be the fuzzy AND/OR result (min/max of all
- truth values).
-
- The THEN statement contains only one fuzzy induction. The
- format of a fuzzy induction is one of these forms:
- variable IS symbol
- variable + symbol
- variable - symbol
- The variable must be an OUT, INOUT, or LOCAL variable. The
- first format simply defines the result of 'variable' is the
- 'symbol' fuzzy membership set with the max truth be the overall
- result from the IF statement. The second and third format is to
- increment/decrement the current 'variable' by the amount defined
- by 'symbol'.
-
- Example
- SEGMENT main_control
- CYCLE_TIME 0.1
-
- IN Reference (0, 100)
- IN Speed (-1, 1)
- OUT Result (0, 10)
- LOCAL Temp (-1, 1)
-
- SYMBOL small OF Reference (0, 0, 10, 20, 1.0)
- SYMBOL slow OF Speed (0, 1, 2, 3, 1)
- SYMBOL strong (8, 9, 10, 10, 1, 10)
-
- IF Reference IS small AND Speed IS slow
- THEN Result IS strong
-
- . . . .
-
- END main_control;
-
- A rule can be repeated more than once in a segment to intensify
- the effect of the rule.
-
- Data Table: data_declaration
- The data table declaration provides user to specify data set in
- the format similar to spread sheet.
-
- FORMAT DATA_TABLE (inp1, [inp2, ...] out )
- inp1_val_0 [,] [inp2_val_0 ...] out_val_0 [,]
- inp1_val_1 [,] [inp2_val_1 ...] out_val_1 [,]
- inp1_val_2 [,] [inp2_val_2 ...] out_val_2 [,]
- . . .
- ;
- Where - inp* are input variable names, i.e. must be IN,
- INOUT, or LOCAL variables
- - out is the output variable, i.e. must be OUT,
- INOUT, or LOCAL variable
- - inp1_val_* are values of variable inp1
- - inp2_val_* are values of variable inp2
- - out_val_* are values of output out
-
- The input variable names and output variable name declared
- within the parenthsis determine the contents of the data table
- entries and the order of data values appeared in the table.
-
- Note that the out value should be the output based on the input
- values before it. Normally, this is the case of data table
- generated from a model. For measured data, the skew of input
- and output should be considered before building the data table.
-
- Configuration: configuration_declaration
- When starts up, GAF searches configuration file "GAF.CFG" under
- current directory or where GAF.EXE resides. The configuration
- file is a text file for setting up the GAF environment. The
- format of the configuration file is a series of "attribute =
- attribute_value;". The attribute can be in any order and can be
- defined multiple times with the latter value overrides the
- previous value.
-
- FORMAT attr_name = attr_val;
- WHERE - attr_name is the name of the attribute, availble
- attributes are listed below
- - attr_val is the valid value for the specified
- attribute
-
- FCL allows configuration information been declared within
- "CONFIGURATION" and "END_CONFIGURATION;" keywords to override
- those defined in the gaf.cfg file. The format for declaring
- configuration information in a segment is:
-
- FORMAT CONFIGURATION
- attr_name = attr_val;
- . . .
- END_CONFIGURATION;
-
- The following configuration attributes are provided by GAF.
-
- COLOR_MODE
- Enable/disable color display. Valid values are YES and NO.
- The default is COLOR_MODE = YES;
-
- MENU_COLOR
- Sets the color for the system menu and pulldown menus.
- Available colors are: BLACK, BLUE, GREEN, CYAN, RED, MAGENTA,
- BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN,
- LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE. The default is
- MENU_COLOR = CYAN;
-
- MENU_TEXT_COLOR
- Sets the foreground text color for the system menu and
- pulldown menus. The default is MENU_TEXT_COLOR = BLUE;
-
- HIGHLIGHT_COLOR
- Sets the color for the highlight bar. The default is
- HIGHLIGHT_COLOR = GREEN;
-
- HIGHLIGHT_TEXT_COLOR
- Sets the foreground text color for the highlighted entry.
- The default is HIGHLIGHT_TEXT_COLOR = RED;
-
- DISPLAY_MODE
- Initializes the display mode. Available values are:
- NORMAL_DISPLAY, DISPLAY_PLOT_ONLY, DISPLAY_WHOLE,
- DISPLAY_NO_PLOT, DISPLAY_TEXT_ONLY. Please refer to Display
- section for details.
- The default is DISPLAY_MODE = NORMAL_DISPLAY;
-
- WINDOW_SPLIT
- Initializes the size of the text window. The value is in
- percentage of the screen. Please refer to Display section
- for details.
- The default is WINDOW_SPLIT = 55;
-
- PLOT_DURATION
- Assigns the duration of the trend plot in seconds.
- The default is PLOT_DURATION = 5.0;
-
- TEXT_FONT
- FONT_SIZE
- Configures the text font. Available font are: NORMAL and
- SMALL. The size should be 1 for normal font and 4 for small
- font.
- The default is TEXT_FONT = NORMAL; FONT_SIZE = 1;
-
- DISPLAY_LOCAL_VARIABLE
- This attribute determines whether local variables will be
- displayed along with input/output variables.
- The default is DISPLAY_LOCAL_VARIABLE = NO;
-
- SIM_SCHEDULE_RATE
- The SIM_SCHEDULE_RATE determines the simulated schedule rate.
- The value should be a floating number in seconds.
- The default is SIM_SCHEDULE_RATE = 0.06;
-
- SIM_INC_RATE
-
- The SIM_INC_RATE attribute defines the increment of + and -
- keys during simulation mode. The default is SIM_INC_RATE =
- 0.005;
-
- EVAL_SAMPLE
- This attribute defines how many samples should GAF take for
- calculating average evaluation result during adaptation.
- The default is EVAL_SAMPLE = 3;
-
- GENE_WEIGHT_INC
- Defines the proportion weight increment for gene pool.
- The default is GENE_WEIGHT_INC = 2;
-
- MAX_BEST_ITEM
- Initializes the gene pool size, i.e. number of best genes
- saved in the best list. The default is MAX_BEST_ITEM = 10;
-
- TEST_TIME
- The TEST_TIME attribute initializes the duration for each
- evaluation cycle for adaptation. The value is in seconds,
- and default is TEST_TIME = 2.0;
-
- MIN_SCORE
- This attribute sets the minimum evaluation score for the
- adaptation mode. The default is MIN_SCORE = 0.6;
-
- CHG_RULE_WEIGHT
- ADJ_INPSET_WEIGHT
- ADD_RULE_WEIGHT
- ABLE_RULE_WEIGHT
- CHG_CYCLE_WEIGHT
- CHG_GAIN_WEIGHT
- These attributes are used to assign the weight for genetic
- adapting methods. The values should be in integer, and the
- defaults are 1. Please refer Method section for details.
-
- ADJ_INPSET_MUTATE_WEIGHT
- ADJ_INPSET_CROSSOVER_WEIGHT
- ADJ_INPSET_INTENSIFY_WEIGHT
- ADJ_INPSET_BROADEN_WEIGHT
- ADJ_INPSET_SHIFT_WEIGHT
- ADJ_INPSET_CHG_TRUTH_WEIGHT
- ADJ_INPSET_SCALE
- These attributes are used to assign the weight for adjusting
- the input fuzzy membership set. The values should be in
- integer, and the defaults are 1. Please refer Method section
- for details.
-
- MAX_RULE
- The MAX_RULE defines the maximum number of rules allowed
- during adaptation. The default is zero, i.e. there is no
- limit for number of rules.
-
- MAX_CYCLE_RATE
- MIN_CYCLE_RATE
- These two attributes define the limit of cycle rate for the
- adaptation. The default are:
- MAX_CYCLE_RATE = 0.50;
- MIN_CYCLE_TIME = 0.03;
-
- EVAL_NULL_BAND
- Defines the null band for the score of evaluation result.
- The default is EVAL_NULL_BAND = 0.02;
-
- ENABLE_ADAPT_LOG
- ENABLE_DETAIL_ADAPT_LOG
- ENABLE_PLOT_DATA_LOG
- These attributes initialize the status of enable or disable
- adapt log, adapt detail log, or the plot data log. Valid
- values are: YES to enable and NO to disable. The defaults
- are NO.
-
- ADAPT_LOG_FILE
- PLOT_DATA_FILE
- ADAPT_REPORT_FILE
- STATISTIC_REPORT_FILE
- These attributes define the file names for the adapt log,
- plot data, adapt report, or the statistic report. The
- defaults are:
- ADAPT_LOG_FILE = "adaptlog.log";
- PLOT_DATA_FILE = "adaptlog.dat";
- ADAPT_REPORT_FILE = "adaptlog.rpt";
- STATISTIC_REPORT_FILE = "adaptlog.sta";
-